1. Field of the Invention
This invention relates to computer systems and, more particularly, to file-based storage systems.
2. Description of the Related Art
Computer systems often process large quantities of information, including application data and executable code configured to process such data. In numerous embodiments, computer systems provide various types of mass storage devices configured to store data, such as magnetic and optical disk drives, tape drives, etc. To provide a regular and systematic interface through which to access their stored data, such storage devices are frequently organized into hierarchies of files by software such as an operating system. Often a file defines a minimum level of data granularity that a user can manipulate within a storage device, although various applications and operating system processes may operate on data within a file at a lower level of granularity than the entire file.
In some file-based computer systems, various types of information about files, also referred to as metadata, may be stored in addition to the files themselves. However, in typical conventional computer systems, access to files and their metadata by application software is provided by an interface specific to a particular programming language, operating system, or hardware architecture. In such systems, for applications using a new programming language, operating system, or hardware architecture to be given access to files and metadata, a separate interface may need to be provided. Further, such interfaces may vary substantially according to the type of data access desired, the programming language used, or other factors.
Creating and supporting new interfaces may require additional programmer effort, such as coding and verification effort. Further, as types of interfaces multiply, the effort required to maintain them over time increases. Additionally, if a unique interface is provided for each programming language, operating system, or architecture scenario, such interfaces may diverge considerably in their support for various features of file and metadata access. For example, not all interfaces may provide all programming languages the same level of access to file data and metadata. Some interfaces may require a programmer to engage in numerous platform-specific preliminary steps to initialize and prepare for accessing data before any actual data transfer is performed. Such divergence among interfaces may complicate the application programming task and hinder acceptance of a given file content format among developers.